#include <bits/stdc++.h>
using namespace std;
const int N=1e5+50;
vector<int> g[N];
int sum[N];
int n,x;
void dfs(int u){
    if(g[u].size()==0){
        sum[u]=1;
        return;
    }
    int siz=g[u].size();
    for(int i=0;i<siz;i++){
        dfs(g[u][i]);
        sum[u]+=sum[g[u][i]];
    }
    return;
}
int main(void){
    scanf("%d",&n);
    for(int i=2;i<=n;i++){
        scanf("%d",&x);
        g[x].push_back(i);
    }
    dfs(1);
    sort(sum+1,sum+1+n);
    for(int i=1;i<=n;i++){
        printf("%d ",sum[i]);
    }
    return 0;
}